#include"logistics_hq.h"

int cnt_shop_yz;

//后勤账号登录
bool logistics_up_password(void)
{
	char id_[11];
	char password_[7];
	int cntid=-1;
    
    printf("请输入用户名：");
    scanf("%s",id_);
	cntid=logistics_id_query(id_);
    while(-1 == cntid)
    {    
        printf("\n该用户名还未被注册。\n");
        show_msg("(按1退出，按2继续登录)",0.7);
		switch(get_cmd('1','2'))
		{   
			case '1':return false;
			case '2':break;
		}
        printf("请输入用户名：");
        scanf("%s",id_);
		cntid=logistics_id_query(id_);
    }


    printf("请输入密码：");
    get_passwd(password_,sizeof(password_));   
    while(0 != strcmp(password_,logistics[cntid].password))
    {
         printf("你输入的密码错误,请重新输入\n");
         show_msg("(按1退出，按2继续登录)",0.7); 
         switch(get_cmd('1','2'))
         {
            case '1':return false;
            case '2':break;
         }
         printf("请输入密码：");
         get_passwd(password_,sizeof(password_)); 
    }
          return true;
}


//显示需要补货的商品
void logistics_findadd(void)
{
     bool bu_huo=false;
     for(int i=0;i<cnt_shop;i++)
     {
        if(ADD_MIN >= shop[i].num)
        {
            bu_huo=true;  
            printf("编号为%s\t的商品%s\t剩余%d\t件。请及时补货！\n",
                    shop[i].id,
                    shop[i].name,
                    shop[i].num);
        }
     }
     if(false==bu_huo)
     {
		 printf("当前货物充足不需补货。\n");
     }
     anykey_continue();
}

//添加商品
void add_shop(void)
{
    int bool_;
    if(cnt_shop >=SHOP_MAX)
	{   
		show_msg("录入的商品数已满，录入失败！",0.7);
		return;
	}
   
   //添加商品，提供退出按钮。
   while(1)
   {
	   printf("请输入商品的id：");
       get_str(shop[cnt_shop].id,sizeof(shop[cnt_shop].id));
       printf("请输入商品的名字：");
       get_str(shop[cnt_shop].name,sizeof(shop[cnt_shop].name));
        
       //要两个都不一样
       bool_=shop_id_query(shop[cnt_shop].id)+shop_name_query(shop[cnt_shop].name);          
       //找到了退出循环.
       if(-2 == bool_)
	   {
		   break;
       }
	   show_msg("该商品已经被录入,请重新输入。\n",0.8);  
       show_msg("(按1退出按2继续输入)\n",0.7); 
       switch(get_cmd('1','2'))
       {
             case '1':return;
             case '2':break;
       }
   }
   printf("请输入商品的价格：");
   scanf("%lf",&shop[cnt_shop].price);

   printf("请输入商品的数量：");
   scanf("%d",&shop[cnt_shop].num);
     
   shop[cnt_shop].loss=0;
     
   cnt_shop++;
     
   show_msg("商品添加成功！",0.7);
}


//查找某一商品
void find_shop(void)
{
	Shop find_;
   
    //查找商品，提供退出按钮。
    while(1)
    {
		printf("请输入要查找的商品id:"); 
        get_str(find_.id,sizeof(find_.id));
        cnt_shop_yz=shop_id_query(find_.id); 
        //找到了退出循环，下标记在cnt_shop_yz中。
        if(0 <= cnt_shop_yz)
        {
           break;
        }
        printf("未找到该商品\n"); 
        show_msg("(按1退出按2继续输入)\n",0.7); 
        switch(get_cmd('1','2'))
        {
			case '1':return;
            case '2':break;
        }
    }    
    //管理该商品信息       
    change_shop();
}

//查看所有商品
void shop_show_all(void)
{
	if(0 == cnt_shop)
	{
		show_msg("当前无任何商品!",0.75);
		return;
	}

	for(int i=0; i<cnt_shop; i++)
	{
		printf("商品id:%s\t| 商品名:%s\t\t| 价格:%.3lf\t元| 数量:%d\t件| 损耗:%d\t件| \n",
               shop[i].id,
               shop[i].name,
               shop[i].price,
               shop[i].num,
               shop[i].loss);
        printf("\n");
	}
	anykey_continue();
}

//下架
void shop_delete(void)
{
	shop[cnt_shop_yz]=shop[cnt_shop-1];
    cnt_shop--;
	show_msg("下架成功",0.7);
}

//报损
void shop_rLoss(void)  
{
   int l;
   printf("请输入损耗的数量：");
   scanf("%d",&l);
   shop[cnt_shop_yz].loss+=l;
   shop[cnt_shop_yz].num-=l;
   printf("提交损耗信息成功！\n");
   anykey_continue();
}

//修改价格
void shop_cprice(void)  
{
   printf("请输入要修改的价格：");
   scanf("%lf",&shop[cnt_shop_yz].price);  
   printf("修改成功！\n");
   anykey_continue();
}

//补货  
void shop_anum(void) 
{
   int l;
   printf("请输入补货的数量：");
   scanf("%d",&l);
   shop[cnt_shop_yz].num+=l;
   show_msg("补货成功！\n",0.7);
   anykey_continue();
}

//显示修改商品信息界面
void show_change_shop(void)
{
	system("clear");
    printf("商品编号：%s\n商品名称：%s\n商品价格：%.3lf元\n商品数量：%d件\n商品损耗：%d件\n",
            shop[cnt_shop_yz].id,
            shop[cnt_shop_yz].name,
            shop[cnt_shop_yz].price,
            shop[cnt_shop_yz].num,
            shop[cnt_shop_yz].loss);  
	
    puts("******************");
	puts("1、下架商品");
	puts("2、报损");
	puts("3、修改价格");
	puts("4、补充商品");
	puts("0、返回");   
}
//修改商品信息 
void change_shop(void)
{
	while(1)
    {            
		show_change_shop();
		switch(get_cmd('0','4'))
		{
			case '1':shop_delete();return ; //下架
			case '2':shop_rLoss();break;   //报损
			case '3':shop_cprice();break;  //修改价格
			case '4':shop_anum();break;    //补货             
			case '0':return ;
		}
    }
}

//显示后勤界面
void show_logistics(void)
{
	system("clear");
    puts("　　　商品管理");
	puts("***********************");
	puts("1、查找需要补货的商品");
	puts("2、添加新商品");
	puts("3、查找商品");
    puts("4、查看所有商品");
	puts("0、返回上一界面");
}

//后勤界面显示交互
void logistics_hq_ml(void)
{ 
	bool success=logistics_up_password();
	if(!success)
    {
		printf("登录失败！\n");
    }
	while( success)
    {
		show_logistics();
		printf("*****");
		switch(get_cmd('0','4'))
		{
			case '1':logistics_findadd();break ; //查找需要补货的商品
			case '2':add_shop();break;           //添加商品
			case '3':find_shop();break;          //查找某一商品
            case '4':shop_show_all();break;      //查看所有商品
			case '0':return ;                   
		}
    }
}



